#ifndef RODEUR_H
#define RODEUR_H

#include "Classe.h"
using namespace std;

/**
 * Cette classe implémente le Rôdeur de l'univers AD&D.
 * @author Johan "Solo" Luisier
 */
class Rodeur : public Classe
{
 protected:
  /*
   * Définissent le nombre de compétences et de restritions disponibles.
   */
  static const unsigned int
    nbr_comp, /**< Nombre de compétences. */
    nbr_restric; /**< Nombre de restrictions. */
  /*
   * Liste des compétences et restrictions disponibles.
   * @see ListComp
   */
  static const vector<ListComp>
    Comp, /**< Liste des compétences disponibles */
    Restric; /**< Liste des restrictions disponibles. */
  /**
   * Ensemble des prérequis sur les traits.
   */
  static const vector< Prerequis > Limites;
  /**
   * Ensemble des Races autorisées pour cette Classe.
   */
  static const set< string > RacesAdmises;
  void calculNiveau();
  unsigned int calculeTAc0() const;
  void calculNivMag();
 public:
  Rodeur(unsigned int xp, const vector< unsigned int >& trait,
	 unsigned int& PP, const string& race);
  Rodeur(unsigned int xp, const vector< unsigned int >& trait,
	 const string& race);
  Rodeur(const vector< unsigned int >& trait, const bool& UI,
	 const string& race);
  Rodeur(Classe *ptr);
  ~Rodeur();
  //void afficher_stats(ostream& os = blank());
  //void appliquerModif(const string& type);
  //void augmenterTalents(const unsigned int& bonus, const bool& lvl_up);
  void getJS(unsigned int *tab) const;
  //string getCompetence(const unsigned int& i) const;
  void ecrireSorts(const string& nom_fichier, const bool& ecrase) const;
  void nbrSort(unsigned int sorts[], const unsigned int& taille) const;
  void getPrixAcces(map<string, unsigned int>*& Map) const;
  string getScoreAdditionnel(const unsigned int& i) const;
};

#endif
